#include <limits>
#include "iostream"

/**
 * @brief 1.4 控制流
 * @author 欧阳劲驰
 * @since 0.0.1
 * @return 0
 */
int main() {
    //------------------------while语句------------------------
    std::cout << "\nwhile语句\n";

    //创建累加值和变量
    int sum1 = 0, i1 = 1;
    //如变量小于10则循环
    while (i1 <= 10) {
        //累加值加上变量
        sum1 += i1;
        //变量自增
        ++i1;
    }
    //打印累加信息
    std::cout << "1至10累加至为:" << sum1 << std::endl;

    //-------------------------for语句-------------------------
    std::cout << "\nfor语句\n";

    //创建累加值和变量
    int sum2 = 0;
    //如变量小于10则循环,并变量自增
    for (int i2 = 0; i2 <= 10; ++i2)
        //累加值加上变量
        sum2 += i2;
    //打印累加信息
    std::cout << "1至10累加至为:" << sum2 << std::endl;

    //-------------------读取数量不定的输入数据-------------------
    std::cout << "\n读取数量不定的输入数据\n";

    //创建累加值和变量
    int sum3 = 0, i3 = 0;
     /**
     * <p><strong>输入文件结束符,或非整数类型时,则停止循环。</strong>
     * <blockquote><pre>
     * 输入流读取成功会返回真,而读取到结束符或非接收类型(int)时会返回假。
     * </pre></blockquote>
     * 文件结束符ASCII为 <strong>^Z</strong> ,也可以用 <strong>Ctrl+Z(win)</strong> / <strong>Ctrl+D(linux)</strong> / <strong>Shift+6->Z(mac)</strong> 快捷键输入该符号)</p>
     */
    while (std::cin >> i3)
        //累加值加上变量
        sum3 += i3;
    //打印累加信息
    std::cout << "累加至为:" << sum3 << std::endl;

    //-------------------------if语句-------------------------
    std::cout << "\nif语句\n";

    //输入流清除错误,并忽略最近一行(用于规避《读取数量不定的输入数据》 while (std::cin >> i3) 键入的异常)
    std::cin.clear();
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

    //创建当前统计值和变量
    int current = 0, i4 = 0;
    //判断键入状态
    if (std::cin >> current) {
        //计数
        int count = 1;
        //循环接收变量
        while (std::cin >> i4) {
            //如变量等于当前统计值,则计数
            if (i4 == current) ++count;
                //否则打印信息,并将当前统计值设置为变量,并重制计数
            else {
                std::cout << current << " 计数 " << count << " 次 " << std::endl;
                current = i4;
                count = 1;
            }
        }
        //停止循环后最后打印信息
        std::cout << current << " 计数 " << count << " 次 " << std::endl;
    }

    return 0;
}
